<?php
/*********************** Easy-D ****************************
 @ 文件名称：Response.class.php
 @ 文件名称：返回处理类                   
 @ 文件作用：处理接口返回时的相关信息
 @ 维护人员：weixuan                                      
 ***********************************************************/

namespace coreLib\ResponseClass;
use coreLib\ErrorClass\Error;

class Response{

	private $routeObj;
	private $cacheObj;

	//构造函数
	function __construct($route,$cache){

		$this->routeObj = $route;
		$this->cacheObj = $cache;

	}

	/*
	 * 返回json数据类型的结果集
	 * @params {$isSuccess} true 成功后的结果，false 失败后的结果
	 * @params {$data}	返回的数据集，如果为NULL，可能为之需要返回一个成功的标志，没有需要返回的结果集
	 * @return 没有返回值
	 */
	function responseData($isSuccess,$data=NULL,$isCacheData=false){

		$newData = $data;

		//判断是成功返回还是失败返回
		if($isSuccess){

			//判断是否存在需要返回的数据内容
			if($newData==NULL){

				//判断返回的结果集是否为数组
				if(gettype($newData) == 'array'){
					$rsData = array("success"=>true,"result"=>array());
				}else{
					$rsData = array("success"=>true);
				}

			}else{

				//判断是否需要对数据进行缓存
				if($this->routeObj->isCache){
					$this->cacheObj->createFileCacheData($newData);
				}
				
				$rsData = array("success"=>true,"result"=>$newData);
			}


		}else{

			//判断是否有CODE，如果没有CODE说明是业务错误，业务错误给的CODE暂定为88888
			if(!isset($data['code'])){

				//保存消息信息
				$message = $newData;

				//构建新的返回消息
				$newData = array("code"=>"88888","message"=>$message);

			}

			$rsData = array("success"=>false,"result" =>$newData);
		}

		//判断是否需要保存接口运行信息
		if($GLOBALS['settings']['debug']){
		
			if($this->routeObj->requestMethod == 'GET' || $this->routeObj->requestMethod == 'ALL') {

				if($isCacheData){
					$GLOBALS['settings']['interfaceInfo'][] = "是否使用缓存结果：是";
				}else{
					$GLOBALS['settings']['interfaceInfo'][] = "是否使用缓存结果：否";
				}

			}

			//在结果中添加运行信息
			$rsData['interfaceInfo'] = $GLOBALS['settings']['interfaceInfo'];


		}

		//返回最终结果，JSON_UNESCAPED_SLASHES : Json不要编码Unicode
		echo json_encode($rsData,JSON_UNESCAPED_SLASHES);
		exit();
	}

}